package br.edu.unipampa.campeonato;

import br.edu.unipampa.clube.Clube;
import java.util.ArrayList;
import utilitario.EntradaDeDados;
import utilitario.InicializadorDeObjetos;

public class Campeonato {

    private String nome;
    private Double premiaçao;
    private ArrayList<Clube> clubes;
    private int numeroDaRodada;
    private InicializadorDeObjetos iniciar;
    
    public Campeonato(String nome, Double premiaçao) {
        this.nome = nome;
        this.premiaçao = premiaçao;
        iniciar = new InicializadorDeObjetos();
        clubes = iniciar.getClubes();
        numeroDaRodada = 1;
    }

    public void tabelaPrimeiraRodada(PartidaDeFutebol partida, EntradaDeDados dados) {
        getClubes().get(0).setClubeQueEnfrenta(getClubes().get(4));
        partida.jogarPartida(dados);
        System.out.println("\n---------- Resultado dos Outros Jogos ------------");
        partida.simulaOutrosJogos(getClubes().get(1), getClubes().get(5));
        partida.simulaOutrosJogos(getClubes().get(2), getClubes().get(6));
        partida.simulaOutrosJogos(getClubes().get(3), getClubes().get(7));   
                   
        numeroDaRodada++;
    }

    public void tabelaSegundaRodada(PartidaDeFutebol partida, EntradaDeDados dados) {
        getClubes().get(1).setClubeQueEnfrenta(getClubes().get(0));
        partida.jogarPartida(dados);
        System.out.println("\n---------- Resultado dos Outros Jogos ------------");
        partida.simulaOutrosJogos(getClubes().get(2), getClubes().get(3));
        partida.simulaOutrosJogos(getClubes().get(4), getClubes().get(5));
        partida.simulaOutrosJogos(getClubes().get(6), getClubes().get(7));   
    
        numeroDaRodada++;
    }

    public void tabelaTerceiraRodada(PartidaDeFutebol partida, EntradaDeDados dados) {
        getClubes().get(0).setClubeQueEnfrenta(getClubes().get(3));
        partida.jogarPartida(dados);
        System.out.println("\n---------- Resultado dos Outros Jogos ------------");
        partida.simulaOutrosJogos(getClubes().get(6), getClubes().get(1));
        partida.simulaOutrosJogos(getClubes().get(7), getClubes().get(4));
        partida.simulaOutrosJogos(getClubes().get(5), getClubes().get(2));   
    
        numeroDaRodada++;
    }

    public void tabelaQuartaRodada(PartidaDeFutebol partida, EntradaDeDados dados) {
        getClubes().get(7).setClubeQueEnfrenta(getClubes().get(0));
        partida.jogarPartida(dados);
        System.out.println("\n---------- Resultado dos Outros Jogos ------------");
        partida.simulaOutrosJogos(getClubes().get(3), getClubes().get(1));
        partida.simulaOutrosJogos(getClubes().get(4), getClubes().get(2));
        partida.simulaOutrosJogos(getClubes().get(5), getClubes().get(6));   
    
        numeroDaRodada++;
    }

    public void tabelaQuintaRodada(PartidaDeFutebol partida, EntradaDeDados dados) {
        getClubes().get(0).setClubeQueEnfrenta(getClubes().get(2));
        partida.jogarPartida(dados);
        System.out.println("\n---------- Resultado dos Outros Jogos ------------");
        partida.simulaOutrosJogos(getClubes().get(7), getClubes().get(1));
        partida.simulaOutrosJogos(getClubes().get(3), getClubes().get(5));
        partida.simulaOutrosJogos(getClubes().get(4), getClubes().get(6));   
    
        numeroDaRodada++;
    }

    public void tabelaSextaRodada(PartidaDeFutebol partida, EntradaDeDados dados) {
        getClubes().get(0).setClubeQueEnfrenta(getClubes().get(6));
        partida.jogarPartida(dados);
        System.out.println("\n---------- Resultado dos Outros Jogos ------------");
        partida.simulaOutrosJogos(getClubes().get(1), getClubes().get(2));
        partida.simulaOutrosJogos(getClubes().get(3), getClubes().get(4));
        partida.simulaOutrosJogos(getClubes().get(5), getClubes().get(7));   
    
        numeroDaRodada++;
    }

    public void tabelaSetimaRodada(PartidaDeFutebol partida, EntradaDeDados dados) {
        getClubes().get(0).setClubeQueEnfrenta(getClubes().get(5));
        partida.jogarPartida(dados);
        System.out.println("\n---------- Resultado dos Outros Jogos ------------");
        partida.simulaOutrosJogos(getClubes().get(3), getClubes().get(6));
        partida.simulaOutrosJogos(getClubes().get(4), getClubes().get(1));
        partida.simulaOutrosJogos(getClubes().get(7), getClubes().get(2));   
    
        numeroDaRodada++;
    }
    
    public void tabelaDeClassificacao(){
        System.out.println("**************** Tabela ****************");
        for (int i = 0; i < clubes.size(); i++) {
            System.out.println(clubes.get(i).getNome() +" - Vitórias: "+clubes.get(i).getVitoria()
                    +" - Derrotas: "+clubes.get(i).getDerrota() +" - Empates: "+clubes.get(i).getEmpate()+" - Pontos: "
                    +clubes.get(i).getPontos());            
        }
        System.out.println("---------------------------------------------------------------------------");
    }
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public Double getPremiaçao() {
        return premiaçao;
    }

    public void setPremiaçao(Double premiaçao) {
        this.premiaçao = premiaçao;
    }

    public ArrayList<Clube> getClubes() {
        return clubes;
    }

    public void addClubes(Clube clube) {
        getClubes().add(clube);
    }

    public void addClubes(int posicao, Clube clube) {
        getClubes().add(posicao, clube);
    }
    
    public int getNumeroDaRodada() {
        return numeroDaRodada;
    }

    public void setNumeroDaRodada(int numeroDaRodada) {
        this.numeroDaRodada = numeroDaRodada;
    }

    public InicializadorDeObjetos getIniciar() {
        return iniciar;
    }
}
